<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Java class file</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Java_class_file"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java_class_file rootpage-Java_class_file skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Java class file</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">This article is about the data format. For classes in Java, see <a href="Class_(computer_programming)" title="Class (computer programming)">Class (computer programming)</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox"><tbody><tr><th colspan="2" class="infobox-above" style="padding-bottom: 0.15em;background-color:#e0e0e0;">Java class file</th></tr><tr><th scope="row" class="infobox-label" style="line-height: 1.2; padding-right: 0.65em;"><a href="Media_type" title="Media type">Internet media type</a></th><td class="infobox-data" style="line-height: 1.35;">application/java-vm, application/x-httpd-java, application/x-java, application/java, application/java-byte-code, application/x-java-class, application/x-java-vm</td></tr><tr><th scope="row" class="infobox-label" style="line-height: 1.2; padding-right: 0.65em;">Developed by</th><td class="infobox-data" style="line-height: 1.35;"><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></td></tr></tbody></table>
<p>A <b>Java class file</b> is a <a href="Computer_file" title="Computer file">file</a> (with the <style data-mw-deduplicate="TemplateStyles:r886049734">
/* start https://en.wikipedia.org/ */
.mw-parser-output .monospaced{font-family:monospace,monospace}
/* end https://en.wikipedia.org/ */
</style><span class="monospaced">.class</span> <a href="Filename_extension" title="Filename extension">filename extension</a>) containing <a href="Java_bytecode" title="Java bytecode">Java bytecode</a> that can be executed on the <a href="Java_virtual_machine" title="Java virtual machine">Java Virtual Machine (JVM)</a>. A Java class file is usually produced by a <a href="Java_compiler" title="Java compiler">Java compiler</a> from <a href="Java_(programming_language)" title="Java (programming language)">Java programming language</a> <a href="Source_file" class="mw-redirect" title="Source file">source files</a> (<span class="monospaced">.java</span> files) containing Java <a href="Class_(programming)" class="mw-redirect" title="Class (programming)">classes</a> (alternatively, other <a href="JVM_languages" class="mw-redirect" title="JVM languages">JVM languages</a> can also be used to create class files). If a source file has more than one class, each class is compiled into a separate class file. Thus, it is called a <span class="monospaced">.class</span> file because it contains the bytecode for a single class.
</p><p>JVMs are available for many <a href="Platform_(computing)" class="mw-redirect" title="Platform (computing)">platforms</a>, and a class file compiled on one platform will execute on a JVM of another platform. This makes Java applications <a href="Cross-platform" class="mw-redirect" title="Cross-platform">platform-independent</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>On 11 December 2006, the class file format was modified under <a href="Java_Specification_Request" class="mw-redirect" title="Java Specification Request">Java Specification Request</a> (JSR) 202.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="File_layout_and_structure">File layout and structure</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Sections">Sections</h3></div>
<p>There are 10 basic sections to the Java class file structure:
</p>
<ul><li><b><a href="Magic_number_(programming)" title="Magic number (programming)">Magic Number</a></b>: <code>0xCAFEBABE</code></li>
<li><b>Version of Class File Format</b>: the minor and major versions of the class file</li>
<li><b>Constant Pool</b>: Pool of constants for the class</li>
<li><b>Access Flags</b>: for example whether the class is abstract, static, etc.</li>
<li><b>This Class</b>: The name of the current class</li>
<li><b><a href="Superclass_(computer_science)" class="mw-redirect" title="Superclass (computer science)">Super Class</a></b>: The name of the super class</li>
<li><b><a href="Interface_(object-oriented_programming)" title="Interface (object-oriented programming)">Interfaces</a></b>: Any interfaces in the class</li>
<li><b>Fields</b>: Any fields in the class</li>
<li><b><a href="Method_(computer_programming)" title="Method (computer programming)">Methods</a></b>: Any methods in the class</li>
<li><b>Attributes</b>: Any attributes of the class (for example the name of the sourcefile, etc.)</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Magic_Number">Magic Number</h3></div>
<p>Class files are identified by the following 4 <a href="Byte" title="Byte">byte</a> <a href="Header_(computing)" title="Header (computing)">header</a> (in <a href="Hexadecimal" title="Hexadecimal">hexadecimal</a>): <code>CA FE BA BE</code> (the first 4 entries in the table below). The history of this <a href="Magic_number_(programming)" title="Magic number (programming)">magic number</a> was explained by <a href="James_Gosling" title="James Gosling">James Gosling</a> referring to a restaurant in <a href="Palo_Alto%2C_California" title="Palo Alto, California">Palo Alto</a>:<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<blockquote>
<p>"We used to go to lunch at a place called St Michael's Alley. According to local legend, in the deep dark past, the <a href="Grateful_Dead" title="Grateful Dead">Grateful Dead</a> used to perform there before they made it big. It was a pretty funky place that was definitely a Grateful Dead Kinda Place. When <a href="Jerry_Garcia" title="Jerry Garcia">Jerry</a> died, they even put up a little Buddhist-esque shrine. When we used to go there, we referred to the place as Cafe Dead. Somewhere along the line it was noticed that this was a HEX number. I was re-vamping some file format code and needed a couple of <a href="Magic_number_(programming)" title="Magic number (programming)">magic numbers</a>: one for the persistent object file, and one for classes. I used CAFEDEAD for the object file format, and in <a href="Grep" title="Grep">grepping</a> for 4 character hex words that fit after "CAFE" (it seemed to be a good theme) I hit on BABE and decided to use it.
At that time, it didn't seem terribly important or destined to go anywhere but the trash-can of history. So CAFEBABE became the class file format, and CAFEDEAD was the persistent object format. But the persistent object facility went away, and along with it went the use of CAFEDEAD - it was eventually replaced by <a href="Java_remote_method_invocation" title="Java remote method invocation">RMI</a>."
</p>
</blockquote>
<div class="mw-heading mw-heading3"><h3 id="General_layout">General layout</h3></div>
<p>Because the class file contains variable-sized items and does not also contain embedded file offsets (or pointers), it is typically parsed sequentially, from the first byte toward the end. At the lowest level the file format is described in terms of a few fundamental data types:
</p>
<ul><li><b>u1</b>: an unsigned <a href="Octet_(computing)" title="Octet (computing)">8-bit</a> integer</li>
<li><b>u2</b>: an unsigned <a href="16-bit" class="mw-redirect" title="16-bit">16-bit</a> integer in <a href="Endianness" title="Endianness">big-endian</a> byte order</li>
<li><b>u4</b>: an unsigned <a href="32-bit" class="mw-redirect" title="32-bit">32-bit</a> integer in big-endian byte order</li>
<li><b>table</b>: an array of variable-length items of some type. The number of items in the table is identified by a preceding count number (the count is a u2), but the size in bytes of the table can only be determined by examining each of its items.</li></ul>
<p>Some of these fundamental types are then re-interpreted as higher-level values (such as strings or floating-point numbers), depending on context.
There is no enforcement of word alignment, and so no padding bytes are ever used.
The overall layout of the class file is as shown in the following table.
</p>
<table class="wikitable">
<tbody><tr>
<th>Byte offset
</th>
<th>Size
</th>
<th>Type or value
</th>
<th>Description
</th></tr>
<tr>
<td>0
</td>
<td rowspan="4">4 bytes
</td>
<td>u1 =<br>0xCA hex
</td>
<td rowspan="4"><a href="Magic_number_(programming)" title="Magic number (programming)">magic number</a> (CAFEBABE) used to identify file as conforming to the class file format
</td></tr>
<tr>
<td>1
</td>
<td>u1 =<br>0xFE hex
</td></tr>
<tr>
<td>2
</td>
<td>u1 =<br>0xBA hex
</td></tr>
<tr>
<td>3
</td>
<td>u1 =<br>0xBE hex
</td></tr>
<tr>
<td>4
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">minor version number of the class file format being used
</td></tr>
<tr>
<td>5
</td></tr>
<tr>
<td>6
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">major version number of the class file format being used.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><br>
<p>Java SE 25 = 69 (0x45 hex),<br>
Java SE 24 = 68 (0x44 hex),<br>
Java SE 23 = 67 (0x43 hex),<br>
Java SE 22 = 66 (0x42 hex),<br>
Java SE 21 = 65 (0x41 hex),<br>
Java SE 20 = 64 (0x40 hex),<br>
Java SE 19 = 63 (0x3F hex),<br>
Java SE 18 = 62 (0x3E hex),<br>
Java SE 17 = 61 (0x3D hex),<br>
Java SE 16 = 60 (0x3C hex),<br>
Java SE 15 = 59 (0x3B hex),<br>
Java SE 14 = 58 (0x3A hex),<br>
Java SE 13 = 57 (0x39 hex),<br>
Java SE 12 = 56 (0x38 hex),<br>
Java SE 11 = 55 (0x37 hex),<br>
Java SE 10 = 54 (0x36 hex),<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><br>
Java SE 9 = 53 (0x35 hex),<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><br>
Java SE 8 = 52 (0x34 hex),<br>Java SE 7 = 51 (0x33 hex),<br>Java SE 6.0 = 50 (0x32 hex),<br>Java SE 5.0 = 49 (0x31 hex),<br>JDK 1.4 = 48 (0x30 hex),<br>JDK 1.3 = 47 (0x2F hex),<br>JDK 1.2 = 46 (0x2E hex),<br>JDK 1.1 = 45 (0x2D hex).<br>For details of earlier version numbers see footnote 1 at <a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html">The JavaTM Virtual Machine Specification 2nd edition</a>
</p>
</td></tr>
<tr>
<td>7
</td></tr>
<tr>
<td>8
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">constant pool count, number of entries in the following constant pool table. This count is at least one greater than the actual number of entries; see following discussion.
</td></tr>
<tr>
<td>9
</td></tr>
<tr>
<td>10
</td>
<td rowspan="4"><i>cpsize</i> (variable)
</td>
<td rowspan="4">table
</td>
<td rowspan="4">constant pool table, an array of variable-sized constant pool entries, containing items such as literal numbers, strings, and references to classes or methods. Indexed starting at 1, containing (<i>constant pool count</i> - 1) number of entries in total (see note).
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>10+<i>cpsize</i>
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">access flags, a bitmask
</td></tr>
<tr>
<td>11+<i>cpsize</i>
</td></tr>
<tr>
<td>12+<i>cpsize</i>
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">identifies <i>this</i> class, index into the constant pool to a "Class"-type entry
</td></tr>
<tr>
<td>13+<i>cpsize</i>
</td></tr>
<tr>
<td>14+<i>cpsize</i>
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">identifies <i>super</i> class, index into the constant pool to a "Class"-type entry
</td></tr>
<tr>
<td>15+<i>cpsize</i>
</td></tr>
<tr>
<td>16+<i>cpsize</i>
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">interface count, number of entries in the following interface table
</td></tr>
<tr>
<td>17+<i>cpsize</i>
</td></tr>
<tr>
<td>18+<i>cpsize</i>
</td>
<td rowspan="4"><i>isize</i> (variable)
</td>
<td rowspan="4">table
</td>
<td rowspan="4">interface table: a variable-length array of constant pool indexes describing the interfaces implemented by this class
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>18+<i>cpsize</i>+<i>isize</i>
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">field count, number of entries in the following field table
</td></tr>
<tr>
<td>19+<i>cpsize</i>+<i>isize</i>
</td></tr>
<tr>
<td>20+<i>cpsize</i>+<i>isize</i>
</td>
<td rowspan="4"><i>fsize</i> (variable)
</td>
<td rowspan="4">table
</td>
<td rowspan="4">field table, variable length array of fields
<p>each element is a field_info structure defined in <a rel="nofollow" class="external free" href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.5">https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.5</a>
</p>
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>20+<i>cpsize</i>+<i>isize</i>+<i>fsize</i>
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">method count, number of entries in the following method table
</td></tr>
<tr>
<td>21+<i>cpsize</i>+<i>isize</i>+<i>fsize</i>
</td></tr>
<tr>
<td>22+<i>cpsize</i>+<i>isize</i>+<i>fsize</i>
</td>
<td rowspan="4"><i>msize</i> (variable)
</td>
<td rowspan="4">table
</td>
<td rowspan="4">method table, variable length array of methods
<p>each element is a method_info structure defined in <a rel="nofollow" class="external free" href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.6">https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.6</a>
</p>
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>22+<i>cpsize</i>+<i>isize</i>+<i>fsize</i>+<i>msize</i>
</td>
<td rowspan="2">2 bytes
</td>
<td rowspan="2">u2
</td>
<td rowspan="2">attribute count, number of entries in the following attribute table
</td></tr>
<tr>
<td>23+<i>cpsize</i>+<i>isize</i>+<i>fsize</i>+<i>msize</i>
</td></tr>
<tr>
<td>24+<i>cpsize</i>+<i>isize</i>+<i>fsize</i>+<i>msize</i>
</td>
<td rowspan="4"><i>asize</i> (variable)
</td>
<td rowspan="4">table
</td>
<td rowspan="4">attribute table, variable length array of attributes
<p>each element is an attribute_info structure defined in <a rel="nofollow" class="external free" href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7">https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7</a>
</p>
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr>
<tr>
<td>...
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="Representation_of_a_class_file">Representation of a class file</h3></div>
<p>The following is a representation of a <span class="monospaced">.class</span> file as if it were a C-style struct.
</p>
<div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span class="k">struct</span><span class="w"> </span><span class="nc">ClassFileFormat</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">u4</span><span class="w"> </span><span class="n">magicNumber</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">minorVersion</span><span class="p">;</span><span class="w"> </span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">majorVersion</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">constantPoolCount</span><span class="p">;</span><span class="w"> </span>
<span class="w"> </span>
<span class="w"> </span><span class="n">ConstantPoolInfo</span><span class="p">[</span><span class="n">constantPoolCount</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="n">constantPool</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">accessFlags</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">thisClass</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">superClass</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">interfacesCount</span><span class="p">;</span><span class="w"> </span>
<span class="w"> </span>
<span class="w"> </span><span class="n">u2</span><span class="p">[</span><span class="n">interfacesCount</span><span class="p">]</span><span class="w"> </span><span class="n">interfaces</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">fieldsCount</span><span class="p">;</span><span class="w"> </span>
<span class="w"> </span><span class="n">FieldInfo</span><span class="p">[</span><span class="n">fieldsCount</span><span class="p">]</span><span class="w"> </span><span class="n">fields</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">methodsCount</span><span class="p">;</span>
<span class="w"> </span><span class="n">MethodInfo</span><span class="p">[</span><span class="n">methodsCount</span><span class="p">]</span><span class="w"> </span><span class="n">methods</span><span class="p">;</span>
<span class="w"> </span><span class="n">u2</span><span class="w"> </span><span class="n">attributesCount</span><span class="p">;</span><span class="w"> </span>
<span class="w"> </span><span class="n">AttributeInfo</span><span class="p">[</span><span class="n">attributesCount</span><span class="p">]</span><span class="w"> </span><span class="n">attributes</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="The_constant_pool">The constant pool</h3></div>
<p>The constant pool table is where most of the literal constant values are stored. This includes values such as numbers of all sorts, strings, identifier names, references to classes and methods, and type descriptors. All indexes, or references, to specific constants in the constant pool table are given by 16-bit (type u2) numbers, where index value 1 refers to the first constant in the table (index value 0 is invalid).
</p><p>Due to historic choices made during the file format development, the number of constants in the constant pool table is not actually the same as the constant pool count which precedes the table. First, the table is indexed starting at 1 (rather than 0), but the count should actually be interpreted as the maximum index plus one.<sup id="cite_ref-jvms-4.4_6-0" class="reference"><a href="#cite_note-jvms-4.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Additionally, two types of constants (longs and doubles) take up two consecutive slots in the table, although the second such slot is a phantom index that is never directly used.
</p><p>The type of each item (constant) in the constant pool is identified by an initial byte <i>tag</i>. The number of bytes following this tag and their interpretation are then dependent upon the tag value. The valid constant types and their tag values are:
</p>
<table class="wikitable">
<tbody><tr>
<th>Tag byte
</th>
<th>Additional bytes
</th>
<th>Description of constant
</th>
<th>Version introduced
</th></tr>
<tr>
<td>1
</td>
<td>2+<i>x</i> bytes<br>(variable)
</td>
<td>UTF-8 (Unicode) string: a character string prefixed by a 16-bit number (type u2) indicating the number of bytes in the encoded string which immediately follows (which may be different than the number of characters). Note that the encoding used is not actually <a href="UTF-8" title="UTF-8">UTF-8</a>, but involves a slight modification of the Unicode standard encoding form.
</td>
<td>1.0.2
</td></tr>
<tr>
<td>3
</td>
<td>4 bytes
</td>
<td>Integer: a signed 32-bit <a href="Two's_complement" title="Two's complement">two's complement</a> number in big-endian format
</td>
<td>1.0.2
</td></tr>
<tr>
<td>4
</td>
<td>4 bytes
</td>
<td>Float: a 32-bit single-precision <a href="IEEE_754" title="IEEE 754">IEEE 754</a> floating-point number
</td>
<td>1.0.2
</td></tr>
<tr>
<td>5
</td>
<td>8 bytes
</td>
<td>Long: a signed 64-bit two's complement number in big-endian format (takes two slots in the constant pool table)
</td>
<td>1.0.2
</td></tr>
<tr>
<td>6
</td>
<td>8 bytes
</td>
<td>Double: a 64-bit double-precision IEEE 754 floating-point number (takes two slots in the constant pool table)
</td>
<td>1.0.2
</td></tr>
<tr>
<td>7
</td>
<td>2 bytes
</td>
<td>Class reference: an index within the constant pool to a UTF-8 string containing the fully qualified class name (in <i>internal format</i>) (big-endian)
</td>
<td>1.0.2
</td></tr>
<tr>
<td>8
</td>
<td>2 bytes
</td>
<td>String reference: an index within the constant pool to a UTF-8 string (big-endian too)
</td>
<td>1.0.2
</td></tr>
<tr>
<td>9
</td>
<td>4 bytes
</td>
<td>Field reference: two indexes within the constant pool, the first pointing to a Class reference, the second to a Name and Type descriptor. (big-endian)
</td>
<td>1.0.2
</td></tr>
<tr>
<td>10
</td>
<td>4 bytes
</td>
<td>Method reference: two indexes within the constant pool, the first pointing to a Class reference, the second to a Name and Type descriptor. (big-endian)
</td>
<td>1.0.2
</td></tr>
<tr>
<td>11
</td>
<td>4 bytes
</td>
<td>Interface method reference: two indexes within the constant pool, the first pointing to a Class reference, the second to a Name and Type descriptor. (big-endian)
</td>
<td>1.0.2
</td></tr>
<tr>
<td>12
</td>
<td>4 bytes
</td>
<td>Name and type descriptor: two indexes to UTF-8 strings within the constant pool, the first representing a name (identifier) and the second a specially encoded type descriptor.
</td>
<td>1.0.2
</td></tr>
<tr>
<td>15
</td>
<td>3 bytes
</td>
<td>Method handle: this structure is used to represent a method handle and consists of one byte of type descriptor, followed by an index within the constant pool.<sup id="cite_ref-jvms-4.4_6-1" class="reference"><a href="#cite_note-jvms-4.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</td>
<td>7
</td></tr>
<tr>
<td>16
</td>
<td>2 bytes
</td>
<td>Method type: this structure is used to represent a method type, and consists of an index within the constant pool.<sup id="cite_ref-jvms-4.4_6-2" class="reference"><a href="#cite_note-jvms-4.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</td>
<td>7
</td></tr>
<tr>
<td>17
</td>
<td>4 bytes
</td>
<td>Dynamic: this is used to specify a dynamically computed constant produced by invocation of a bootstrap method.<sup id="cite_ref-jvms-4.4_6-3" class="reference"><a href="#cite_note-jvms-4.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</td>
<td>11
</td></tr>
<tr>
<td>18
</td>
<td>4 bytes
</td>
<td>InvokeDynamic: this is used by an <i>invokedynamic</i> instruction to specify a bootstrap method, the dynamic invocation name, the argument and return types of the call, and optionally, a sequence of additional constants called static arguments to the bootstrap method.<sup id="cite_ref-jvms-4.4_6-4" class="reference"><a href="#cite_note-jvms-4.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</td>
<td>7
</td></tr>
<tr>
<td>19
</td>
<td>2 bytes
</td>
<td>Module: this is used to identify a module.<sup id="cite_ref-jvms-4.4_6-5" class="reference"><a href="#cite_note-jvms-4.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</td>
<td>9
</td></tr>
<tr>
<td>20
</td>
<td>2 bytes
</td>
<td>Package: this is used to identify a package exported or opened by a module.<sup id="cite_ref-jvms-4.4_6-6" class="reference"><a href="#cite_note-jvms-4.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</td>
<td>9
</td></tr></tbody></table>
<p>There are only two integral constant types, integer and long. Other integral types appearing in the high-level language, such as boolean, byte, and short must be represented as an integer constant.
</p><p>Class names in Java, when fully qualified, are traditionally dot-separated, such as "java.lang.Object". However within the low-level Class reference constants, an internal form appears which uses slashes instead, such as "java/lang/Object".
</p><p>The Unicode strings, despite the moniker "UTF-8 string", are not actually encoded according to the Unicode standard, although it is similar. There are two differences (see <a href="UTF-8" title="UTF-8">UTF-8</a> for a complete discussion). The first is that the code point U+0000 is encoded as the two-byte sequence <code>C0 80</code> (in hex) instead of the standard single-byte encoding <code>00</code>. The second difference is that supplementary characters (those outside the <a href="Basic_Multilingual_Plane" class="mw-redirect" title="Basic Multilingual Plane">BMP</a> at U+10000 and above) are encoded using a surrogate-pair construction similar to <a href="UTF-16" title="UTF-16">UTF-16</a> rather than being directly encoded using UTF-8. In this case each of the two surrogates is encoded separately in UTF-8. For example, U+1D11E is encoded as the 6-byte sequence <code>ED A0 B4 ED B4 9E</code>, rather than the correct 4-byte UTF-8 encoding of <code>F0 9D 84 9E</code>.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="Java_bytecode" title="Java bytecode">Java bytecode</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=202">JSR 202</a> Java Class File Specification Update</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://radio-weblogs.com/0100490/2003/01/28.html">James Gosling private communication to Bill Bumgarner</a></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/jvms/se23/html/jvms-4.html#jvms-4.1-200-B.2">"Table 4.1-A. class file format major versions"</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/10-relnote-issues-4108729.html#Remaining">"JDK 10 Release Notes"</a>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://bugs.openjdk.java.net/browse/JDK-8148785">"[JDK-8148785] Update class file version to 53 for JDK-9 - Java Bug System"</a>.</cite></span>
</li>
<li id="cite_note-jvms-4.4-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-jvms-4.4_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-jvms-4.4_6-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-jvms-4.4_6-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-jvms-4.4_6-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-jvms-4.4_6-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-jvms-4.4_6-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-jvms-4.4_6-6"><sup><i><b>g</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.4">"Chapter 4. The class File Format"</a>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li><cite id="CITEREFTim_Lindholm,_Frank_Yellin1999" class="citation book cs1">Tim Lindholm, Frank Yellin (1999). <a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html"><i>The Java Virtual Machine Specification</i></a> (Second ed.). Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-201-43294-3</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">2008-10-13</span></span>.</cite> The official defining document of the <a href="Java_virtual_machine" title="Java virtual machine">Java Virtual Machine</a>, which includes the class file format. Both the first and second editions of the book are freely available <a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/specs/">online for viewing and/or download</a>.</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Java_(software_platform)419" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Java_(software_platform)419" style="font-size:114%;margin:0 4em"><a href="Java_(software_platform)" title="Java (software platform)">Java (software platform)</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platforms</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_virtual_machine" title="Java virtual machine">JVM</a></li>
<li><a href="Java_Platform%2C_Micro_Edition" title="Java Platform, Micro Edition">Java ME</a> (Micro)</li>
<li><a href="Java_Platform%2C_Standard_Edition" title="Java Platform, Standard Edition">Java SE</a> (Standard)</li>
<li><a href="Jakarta_EE" title="Jakarta EE">Jakarta EE</a> (Enterprise)</li>
<li><a href="Java_Card" title="Java Card">Java Card</a></li>
<li><a href="Android_software_development#SDK" title="Android software development">Android SDK</a></li>
<li><a href="GraalVM" title="GraalVM">GraalVM</a></li></ul>
</div></td><td class="noviewer navbox-image" rowspan="5" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Technologies</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Oracle</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Squawk_virtual_machine" title="Squawk virtual machine">Squawk</a></li>
<li><a href="Java_Development_Kit" title="Java Development Kit">Java Development Kit</a></li>
<li><a href="OpenJDK" title="OpenJDK">OpenJDK</a></li>
<li><a href="Java_virtual_machine" title="Java virtual machine">Java virtual machine</a></li>
<li><a href="JavaFX" title="JavaFX">JavaFX</a></li>
<li><a href="Maxine_Virtual_Machine" title="Maxine Virtual Machine">Maxine VM</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platform</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_applet" title="Java applet">Applets</a></li>
<li><a href="Jakarta_Servlet" title="Jakarta Servlet">Servlets</a></li>
<li><a href="MIDlet" title="MIDlet">MIDlets</a></li>
<li><a href="Jakarta_Server_Pages" title="Jakarta Server Pages">JSP</a></li>
<li><a href="Jakarta_Faces" title="Jakarta Faces">JSF</a></li>
<li><a href="Java_Web_Start" title="Java Web Start">Web Start</a> (JNLP)</li>
<li><a href="Pack200" title="Pack200">Pack200</a></li>
<li><a href="Java_Platform_Module_System" title="Java Platform Module System">Modules</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Major<br>third-party</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Blackdown_Java" title="Blackdown Java">Blackdown</a></li>
<li><a href="Eclipse_(software)" title="Eclipse (software)">Eclipse</a></li>
<li><a href="GNU_Classpath" title="GNU Classpath">GNU Classpath</a></li>
<li><a href="Google_Web_Toolkit" title="Google Web Toolkit">GWT</a></li>
<li><a href="Apache_Harmony" title="Apache Harmony">Harmony</a></li>
<li><a href="Hibernate_(framework)" title="Hibernate (framework)">Hibernate</a></li>
<li><a href="IcedTea" title="IcedTea">IcedTea</a></li>
<li><a href="Jazelle" title="Jazelle">Jazelle</a></li>
<li><a href="Spring_Framework" title="Spring Framework">Spring</a></li>
<li><a href="Apache_Struts" title="Apache Struts">Struts</a></li>
<li><a href="Oracle_TopLink" title="Oracle TopLink">TopLink</a></li>
<li><a href="WildFly" title="WildFly">WildFly</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">History</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_version_history" title="Java version history">Java version history</a></li>
<li><a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></li>
<li><a href="Free_Java_implementations" title="Free Java implementations">Free Java implementations</a></li>
<li>Slogan: <i><a href="Write_once%2C_run_anywhere" title="Write once, run anywhere">Write once, run anywhere</a></i></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="List_of_JVM_languages" title="List of JVM languages">JVM<br>languages</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_(programming_language)" title="Java (programming language)">Java</a></li>
<li><a href="BeanShell" title="BeanShell">BeanShell</a></li>
<li><a href="Clojure" title="Clojure">Clojure</a></li>
<li><a href="Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a></li>
<li><a href="JRuby" title="JRuby">JRuby</a></li>
<li><a href="Jython" title="Jython">Jython</a></li>
<li><a href="Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a></li>
<li><a href="Processing" title="Processing">Processing</a></li>
<li><a href="Rhino_(JavaScript_engine)" title="Rhino (JavaScript engine)">Rhino</a></li>
<li><a href="Scala_(programming_language)" title="Scala (programming language)">Scala</a></li>
<li><a href="Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Community</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Conferences</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="JavaOne" title="JavaOne">JavaOne</a></li>
<li><a href="Devoxx" title="Devoxx">Devoxx</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_Software_Foundation" class="mw-redirect" title="Apache Software Foundation">Apache Software Foundation</a></li>
<li><a href="Eclipse_Foundation" title="Eclipse Foundation">Eclipse Foundation</a></li>
<li><a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a></li>
<li><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>, <a href="Sun_Microsystems_Laboratories" class="mw-redirect" title="Sun Microsystems Laboratories">Sun Microsystems Laboratories</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="James_Gosling" title="James Gosling">James Gosling</a></li>
<li><a href="Arthur_van_Hoff" title="Arthur van Hoff">Arthur van Hoff</a></li>
<li><a href="Urs_H%C3%B6lzle" title="Urs Hölzle">Urs Hölzle</a></li>
<li><a href="Patrick_Naughton" class="new" title="Patrick Naughton (page does not exist)">Patrick Naughton</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category</b> • <span class="nowrap"><span class="skin-invert-image noviewer" typeof="mw:File"></span> </span><a href="Portal%3AComputer_programming" title="Portal:Computer programming">Computer programming portal</a></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-07" href="https://en.wikipedia.org/wiki/?title=Java_class_file&oldid=1299319619">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>